#include "widget.h"
#include "ui_widget.h"
#include <QTimer> //定时器的类
#include <QDebug>
#include <QMouseEvent>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

//    启动定时器
    id1 = startTimer(1000);

    id2 = startTimer(2000);

//    定时器的第二种方式
    QTimer * timer = new QTimer(this);
    timer->start(500);
    connect(timer,&QTimer::timeout,[=](){
        static int num3 = 1;
        ui->label_4->setText(QString::number(num3++));
    });

//    点击暂停按钮停止定时器
    connect(ui->pushButton,&QPushButton::clicked,[=](){
       timer->stop();
    });

//    给label 安装事件过滤器
//    1.安装事件过滤器
    ui->label->installEventFilter(this);

}

//    2.重写 eventFilter事件
bool Widget::eventFilter(QObject * obj, QEvent * e){
    if(obj == ui->label){
        if(e->type() == QEvent::MouseButtonPress) {
            QMouseEvent * ev = static_cast<QMouseEvent *>(e);
            QString str = QString("事件过滤器中,鼠标按下了 x = %1 y = %2 globalX = %3 globalY = %4").arg(ev->x()).arg(ev->y()).arg(ev->globalX()).arg(ev->globalY());
            qDebug() << str;

            return true; //true代表用户自己处理 不向下分发
        }
    }
//    其他默认处理
    return QWidget::eventFilter(obj,e);
}

void Widget::timerEvent(QTimerEvent *ev){
//    label2 1s
    if(ev->timerId() == id1){
        static int num = 1;
        ui->label_2->setText(QString::number(num++));
    }

//    label3 2s
    if(ev->timerId() == id2){
        static int num2 = 1;
        ui->label_3->setText(QString::number(num2++));
    }


}

Widget::~Widget()
{
    delete ui;
}

